#ifndef __BN_COMMON_H__
#define __BN_COMMON_H__

#include "BN_config.h"
#include "BN_data_chain.h"

#ifndef BN_def_Data_block_SIZE
#define BN_def_Data_block_SIZE 256
#endif

typedef enum
{
    BM_HTTP_METHOD,
    BM_HTTP_URL,
    BM_HTTP_REQ_PARA,
    BM_HTTP_HEADER,
    BM_HTTP_BODY,
} BM_http_msg_type;

typedef struct BN_http_msg
{
    BM_http_msg_type type : 4;      // 数据块类型
    unsigned char key_chain_index;  // key值所在数据快位置
    unsigned char key_shift;        // ke值所在数据块偏移地址
    unsigned char para_chain_index; // 参数所在数据块位置
    unsigned char para_shift;       // 参数所在数据偏移位置
    struct BN_http_msg *next;       // 下一个数据描述块位置
} BN_http_msg;

typedef struct BN_common
{
    void *(*malloc)(int);
    void (*free)(void *);
    struct
    {
        _BN_Data_block_t *root;
        _BN_Data_block_t *end;
    } rec;
} BN_handler_t;

#endif